Data storage systems are arrangements of hardware and software that include storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, deleted, and so forth. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Some data storage systems use an assortment of data storage devices. Such data storage devices may have different performance characteristics and may be provided in respective storage tiers, with each storage tier including multiple storage devices that have similar characteristics. Each storage tier may contain a certain amount of data storage capacity, e.g., measured in gigabytes, terabytes, etc., and may include some number of storage drives to meet that capacity. As used herein, a “storage drive” is a physical device that stores data, such as an electronic flash drive, a SAS (Serial Attached SCSI—Small Computer System Interface) drive, an NL-SAS (Near Line SAS) drive, or a SATA (Serial Advanced Technology Attachment) drive, for example.
Data storage systems commonly have imbalanced, or skewed, distributions in the frequency with which various data elements are accessed. For example, in systems with high levels of skew, a small percentage of data elements are the target of a large percentage of IOPS (input/output operations per second). This can impact significantly on the performance of the data storage system. There is a need to address this problem.